// class 类

// 构造函数
// function Person(name) {
//     this.name = name;
// }
// // 在这个类型实例间共享成员需要通过原型对象property
// Person.property.say = function () {
//     console.log(`my name is ${this.name}`);
// };

// 使用class关键词创建一个类
class Person {
    constructor(name) {
        this.name = name;
    }
    say() {
        console.log(`my name is ${this.name}`);
    }
    // 静态方法
    static create(name) {
        console.log(this); //this指向当前的类型Person
        return new Person(name);
    }
}
let p = new Person("jack");
p.say();

let tom = Person.create("tom");
tom.say();

// 继承
// 关键字extends继承某个父类
// 关键字 super可以继承来自父类的属性方法
class Student extends Person {
    constructor(name, number) {
        // 继承父类的属性
        super(name);
        // 子类内部重新定义的属性
        this.number = number;
    }
    // 重新定义的方法hello
    hello() {
        // 内部调用父类的方法say
        super.say();
        console.log(`my number is ${this.number}`);
    }
}
let stu = new Student("bob", 20);
console.log(stu); // Student { name: 'bob', number: 20 }
stu.hello(); // my number is 20
